import time, threading

def loop():
    print('thread %s is running' % threading.current_thread().name)
    n = 0
    while n < 5:
        n = n + 1
        print('thread %s >>> %s' % (threading.current_thread().name, n))
        time.sleep(1)
    print('thread %s is ended' % threading.current_thread().name)

print('thread %s is running' % threading.current_thread().name)
# 使用Thread创建一个线程
p = threading.Thread(target=loop, name='loop')
p.start()
p.join()
print('thread %s is ended' % threading.current_thread().name)
    
# 用LOCK拿到一把锁  acquire获取一把锁  release释放一把锁
# 在python中，由于GIL的存在，无法通过多线程的方式使用CPU的多核，GIL的存在是在python解释器解释执行代码的时候，加了一一把全局锁
# 同一个进程中的多个线程只有一个线程可以拿到锁
# lock = threading.Lock()
# lock.acquire()
# lock.release()